package com.ddw.meedeeuh.shared.movie.scrapers.local;

import java.util.ArrayList;
import java.util.List;

import com.ddw.meedeeuh.shared.io.SourceFile;
import com.ddw.meedeeuh.shared.io.SourceFolder;
import com.ddw.meedeeuh.shared.movie.Actor;
import com.ddw.meedeeuh.shared.movie.EditableMovie;
import com.ddw.meedeeuh.shared.movie.ExtraThumb;
import com.ddw.meedeeuh.shared.movie.StreamDetails;

class LocalMovie implements EditableMovie {

	private final SourceFolder folder;
	private String name;
	private Integer year = null;
	private String originalTitle = null;
	private String sortTitle = null;
	private String set = null;
	private Double rating = null;
	private Boolean isTop250 = null;
	private Integer votes = null;
	private String outline = null;
	private String plot = null;
	private String tagline = null;
	private Integer runtime = null;
	private String trailer = null;
	private String thumbnail = null;
	private String mpaa = null;
	private Integer playCount = null;
	private Boolean isWatched = null;
	private String imdbId = null;
	private String genre = null;
	private String credits = null;
	private String director = null;
	private List<StreamDetails> streamDetails = new ArrayList<StreamDetails>();
	private List<Actor> actors = new ArrayList<Actor>();
	private SourceFile nfo = null;
	private SourceFile poster = null;
	private SourceFile fanart = null;
	private List<ExtraThumb> extraThumbs = new ArrayList<ExtraThumb>();

	LocalMovie(SourceFolder folder, String name) {
		this.folder = folder;
		this.name = name;
	}

	@Override
	public String getName() {
		return this.name;
	}

	@Override
	public Integer getYear() {
		return this.year;
	}

	@Override
	public String getOriginalTitle() {
		return this.originalTitle;
	}

	@Override
	public String getSortTitle() {
		return this.sortTitle;
	}

	@Override
	public String getSet() {
		return this.set;
	}

	@Override
	public Double getRating() {
		return this.rating;
	}

	@Override
	public Boolean isTop250() {
		return this.isTop250;
	}

	@Override
	public Integer getVotes() {
		return this.votes;
	}

	@Override
	public String getOutline() {
		return this.outline;
	}

	@Override
	public String getPlot() {
		return this.plot;
	}

	@Override
	public String getTagLine() {
		return this.tagline;
	}

	@Override
	public Integer getRuntime() {
		return this.runtime;
	}

	@Override
	public String getThumbnail() {
		return this.thumbnail;
	}

	@Override
	public String getMpaa() {
		return this.mpaa;
	}

	@Override
	public Integer getPlayCount() {
		return this.playCount;
	}

	@Override
	public Boolean isWatched() {
		return this.isWatched;
	}

	@Override
	public String getImdbId() {
		return this.imdbId;
	}

	@Override
	public String getTrailer() {
		return this.trailer;
	}

	@Override
	public String getGenre() {
		return this.genre;
	}

	@Override
	public String getCredits() {
		return this.credits;
	}

	@Override
	public Iterable<? extends StreamDetails> getStreamDetails() {
		return this.streamDetails;
	}

	@Override
	public String getDirector() {
		return this.director;
	}

	@Override
	public Iterable<? extends Actor> getActors() {
		return this.actors;
	}

	@Override
	public SourceFolder getFolder() {
		return this.folder;
	}

	@Override
	public void setName(String name) {
		this.name = name;
	}

	@Override
	public void setYear(Integer year) {
		this.year = year;
	}

	@Override
	public void setOriginalTitle(String originalTitle) {
		this.originalTitle = originalTitle;
	}

	@Override
	public void setSortTitle(String sortTitle) {
		this.sortTitle = sortTitle;
	}

	@Override
	public void setSet(String set) {
		this.set = set;
	}

	@Override
	public void setRating(Double rating) {
		this.rating = rating;
	}

	@Override
	public void setTop250(Boolean top250) {
		this.isTop250 = top250;
	}

	@Override
	public void setVotes(Integer votes) {
		this.votes = votes;
	}

	@Override
	public void setOutline(String outline) {
		this.outline = outline;
	}

	@Override
	public void setPlot(String plot) {
		this.plot = plot;
	}

	@Override
	public void setTagLine(String tagline) {
		this.tagline = tagline;
	}

	@Override
	public void setRuntime(Integer runtime) {
		this.runtime = runtime;
	}

	@Override
	public void setThumbnail(String thumbnail) {
		this.thumbnail = thumbnail;
	}

	@Override
	public void setMpaa(String mpaa) {
		this.mpaa = mpaa;
	}

	@Override
	public void setPlayCount(Integer playCount) {
		this.playCount = playCount;
	}

	@Override
	public void setWatched(Boolean watched) {
		this.isWatched = watched;
	}

	@Override
	public void setImdbId(String imdbId) {
		this.imdbId = imdbId;
	}

	@Override
	public void setTrailer(String trailer) {
		this.trailer = trailer;
	}

	@Override
	public void setGenre(String genre) {
		this.genre = genre;
	}

	@Override
	public void setCredits(String credits) {
		this.credits = credits;
	}

	@Override
	public void clearStreamDetails() {
		this.streamDetails.clear();
	}

	@Override
	public void addStreamDetail(StreamDetails streamDetails) {
		this.streamDetails.add(streamDetails);
	}

	@Override
	public void removeStreamDetail(StreamDetails streamDetails) {
		this.streamDetails.remove(streamDetails);
	}

	@Override
	public void setDirector(String director) {
		this.director = director;
	}

	@Override
	public void clearActors() {
		this.actors.clear();
	}

	@Override
	public void addActor(Actor actor) {
		this.actors.add(actor);
	}

	@Override
	public void removeActor(Actor actor) {
		this.actors.remove(actor);
	}

	@Override
	public SourceFile getNfo() {
		return this.nfo;
	}

	@Override
	public SourceFile getPoster() {
		return this.poster;
	}

	@Override
	public SourceFile getFanart() {
		return this.fanart;
	}

	@Override
	public Iterable<? extends ExtraThumb> getExtraThumbs() {
		return this.extraThumbs;
	}

	@Override
	public void setNfo(SourceFile nfo) {
		this.nfo = nfo;
	}

	@Override
	public void setPoster(SourceFile poster) {
		this.poster = poster;
	}

	@Override
	public void setFanart(SourceFile fanart) {
		this.fanart = fanart;
	}

	@Override
	public void clearExtraThumbs() {
		this.extraThumbs.clear();
	}

	@Override
	public void addExtraThumb(ExtraThumb extraThumb) {
		this.extraThumbs.add(extraThumb);
	}

	@Override
	public void removeExtraThumb(ExtraThumb extraThumb) {
		this.extraThumbs.remove(extraThumb);
	}

	@Override
	public int getStreamDetailsCount() {
		return this.streamDetails.size();
	}

	@Override
	public int getActorsCount() {
		return this.actors.size();
	}

	@Override
	public int getExtraThumbsCount() {
		return this.extraThumbs.size();
	}

}
